You are currently viewing the Homey Apps SDK v2 documentation. New apps should use Homey Apps SDK v3 ››

App Store

To share your app with the world, you can submit it to the App Store.

To ensure maximum quality, submitting to the App Store comes with some extra requirements. Athom must approve your app before your app is visible to other users.

Publishing

In your console, simply run:

$ homey app publish

Requirements

To check if all requirements are met, run the following command prior to submission.

$ homey app validate --level publish

App images

The App Store needs images to display your app. There are two sizes. Make sure it is a beautiful photo, or a stylish design.

  • Large 500 x 350 px /assets/images/large.png
  • Small 250 x 175 px /assets/images/small.png

Images must be provided in either .jpg or .png format.

large.jpg large.jpg

Driver images

If you have a driver, you should supply driver images. A driver image should have a white background and fill most of the image.

  • Large 500 x 500 px /drivers/<driver_id>/assets/images/large.png
  • Small 75 x 75 px /drivers/<driver_id>/assets/images/small.png

Images must be provided in either .jpg or .png format.

large small

Providing a README

Sell your app! Your app's README.txt file is shown in plain text in the App Store.

/README.txt

Connect your MyBrand devices with Homey to light up your home.

Create your own Flows to automate all MyBrand at home for a truly unique experience.

App description

Provide a description object in your /app.json. This will be shown above the README. Make it a sexy oneliner to grab the user's attention.

/app.json

{
  "id": "com.rituals",
  "description": {
    "en": "Make your home smell smarter.",
    "nl": "Laat je huis slimmer ruiken."
  }
}

Tags

To make your app better searchable, add a translated array of tags to your app's json.

/app.json

{
	"id": "com.nest",
	"name": {
		"en": "Nest"
	},
	"tags": {
		"en": [ "learning thermostat" ]
	}
}

Mention contributors

It is generally a good idea to give contributors credit. Because only one user can publish to the App Store, you can add multiple authors in your App's json.

/app.json

{
	"id": "com.athom.example",
	"contributors": {
		"developers": [
			{
				"name": "Alice the Wild",
				"email": "alicewild@gmail.com"
			}
		],
		"translators": [
			{
				"name": "Klemens Kohlmann"
			}
		]
	}
}

Environment variables

Sometimes your app must contain information that should not be public. While it is generally a bad idea to embed this in such an application, external services often don't provide a good alternative (for example OAuth2).

It is possible to add environment variables to a Homey app, by placing a /env.json in your app's root, and add it to your .gitignore.

/env.json

{
	"CLIENT_ID": "12345abcde",
	"CLIENT_SECRET": "182hr2389r824ilikepie1302r0832"
}

The variables are available under Homey.env.CLIENT_ID, Homey.env.CLIENT_SECRET, etc. Make sure they are uppercase, and that their value is a string.

The variables are automatically sent to the app store when executed $ homey app publish.

These variables are stored on Homey, and in theory should not be readable by anyone. But keep in mind that no security is 100% safe, ever.

The node_modules folder

If you are using Node.js modules, check them into your repository in a folder /node_modules. You could add an additional /package.json file to keep track of them.

When publishing, your local directory will be compressed and transfered to the Homey App Store.

Submission guidelines

A few guidelines have been established to keep the community working together in unison.

App License

  • Adding a LICENSE file helps other developers understand if they can copy your app, modify it, etc.
  • As a rule of thumb, Athom will look at the submission process and if an app has been forked or is a duplicate, the license file of the original repository will be leading.

One Homey App per brand

  • As a community developer, you are part of a community where we are working towards the common goal of making home automation accessible to everyone. This means we must keep things simple, so ideally there is only one app per brand. We encourage developers to work together by sending Pull Requests to the original author and give credit where due.
  • In the event where a similar app submission is absolutely necessary, please elaborate in your submission why, and make sure it is clear to the end-user.

Donations

  • A donate button is only allowed as a field in the App Manifest.
  • A donate button is not allowed when an app is based on a fork.

Explicit content

  • Apps with adult content (e.g. pornography) are not allowed.

Athom holds the right to make the final descicion if an app will be approved.